#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>
//
//int main()
//{
//	int arr[] = { 2,5,3,2,1,5,3 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	int ret = 0;
//	for (i = 0; i < sz; i++)
//	{
//		ret ^= arr[i];
//	}
//	printf("%d", ret);
//	return 0;
//}
//
//#include <stdio.h>

//int singleNumber(int* nums, int numsSize)
//{
//    int i = 0;
//    for (i = 0; i < numsSize; i++)
//    {
//        int j = 0;
//        int count = 0;
//        for (j = 0; j < numsSize; j++)
//        {
//            if (nums[i] == nums[j])
//            {
//                count++;
//            }
//        }
//        if (count == 1)
//        {
//            return nums[i];
//        }
//    }
//    return 0;
//}


//#include <stdio.h>
//#include <stdlib.h>
//int cmp(const void* p1, const void* p2)
//{
//	return *(int*)p1 - *(int*)p2;
//}
//
//int singleNumber(int* nums, int numsSize)
//{
//	qsort(nums, numsSize, sizeof(int), cmp);
//	int i = 0;
//	int target = nums[0];
//	for (i = 1; i < numsSize; i++)
//	{
//		if (target != nums[i])
//		{
//			break;
//		}
//		i++;
//		target = nums[i];
//	}
//	return target;
//}
//int main()
//{
//    int arr[] = { 10,2,5,3,2,5,3 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    int ret = singleNumber(arr, sz);
//    printf("single number is %d\n", ret);
//}

#include <stdio.h>

int singleNumber(int* nums, int numsSize) 
{
	int ret = 0;
	int i = 0;
	for (i = 0; i < numsSize; i++)
	{
		ret ^= nums[i];
	}
	return ret;
}
int main()
{
	int arr[] = { 10,2,5,3,2,5,3 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret = singleNumber(arr, sz);
	printf("single number is %d\n", ret);
}